package com.yunsc.store.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.yunsc.common.utils.PageResult;
import com.yunsc.store.dto.QueryUserParamsDTO;
import com.yunsc.store.dto.UserBalanceDTO;
import com.yunsc.store.dto.UserParamsDTO;
import com.yunsc.store.entity.YunscUserEntity;
import com.yunsc.system.vo.UserAssetsVO;

/**
 * 用户记录表
 *
 * @author adan
 * @email 2028038953@qq.com
 * @date 2024-04-22 11:35:49
 */
public interface YunscUserService extends IService<YunscUserEntity> {


    /**
     * 订单退款
     *
     * @param orderNo      订单号
     * @param refundMoney  退款金额
     * @param refundPoints 返还积分
     * @param userId       用户id
     */
    void orderRefundMoney(String orderNo, String refundMoney, Integer refundPoints, Integer userId);

    /**
     * 查询用户信息
     *
     * @param userId 当前用户id
     * @return 用户信息
     */
    YunscUserEntity queryUserInfo(Integer userId);

    /**
     * 查询用户资产
     *
     * @param userId 当前用户id
     * @return 用户资产
     */
    UserAssetsVO queryUserAssets(Integer userId);

    /**
     * 减少积分
     *
     * @param userId    用户id
     * @param pointsNum 减少的积分数量
     */
    void subtractPoints(Integer userId, int pointsNum, String msg);

    /**
     * 增加用户积分
     *
     * @param userId    用户id
     * @param pointsNum 增加的积分数量
     */
    void updateUserPoints(Integer userId, Integer pointsNum, String msg);

    /**
     * 分页查询用户列表
     *
     * @param param          查询参数
     * @param storeId        当前门店id
     * @return 用户列表
     */
    PageResult<YunscUserEntity> queryUserList(QueryUserParamsDTO param, Integer storeId);

    /**
     * 编辑用户余额
     *
     * @param param 编辑参数
     */
    void editUserBalance(UserBalanceDTO param);

    /**
     * 编辑用户等级
     * @param param 编辑参数
     */
    void editUserGrade(UserParamsDTO param);

    /**
     * 删除用户
     * @param userId 用户id
     */
    void deleteUser(Integer userId);

    /**
     * 查询用户总数
     *
     * @param startInSeconds
     * @param endInSeconds
     * @param currentStoreId 当前门店id
     * @return 用户总数
     */
    int queryUserTotalCount(int startInSeconds, int endInSeconds, Integer currentStoreId);
}

